package com.cyw.search.service;

import cn.easyes.core.biz.PageInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cyw.common.core.domain.R;
import com.cyw.common.core.domain.entity.SysUser;
import com.cyw.search.entity.user.EsUser;

import java.util.List;

/**
 * @Author: Chenyw
 * @Date: 2022/11/04/16:53
 */
public interface SearchEsUserService {
    /**
     * 查询附近的人
     * @param geoPoint 经纬度
     * @param pageNum 页码
     * @param pageSize 每页显示数
     * @return 分页
     */
    PageInfo<EsUser> searchNearUsers(String geoPoint, Integer pageNum, Integer pageSize);

    /**
     * 登录时候存es
     * @param userId 目标UserId
     */
    void saveOrUpdateUser(Long userId);

    /**
     * 关注或者取消关注
     * @param userId 目标UserId
     * @return R
     */
    R followOrUnFollow(Long userId);

    /**
     * 关注和粉丝数量
     * @return R
     */
    R loveCount();

    /**
     * 查询我的粉丝
     * @param pageSize 页码
     * @param pageNum 每页显示数
     * @return 分页
     */
    Page<SysUser> loveMeUser(Integer pageSize, Integer pageNum);

    /**
     * 我的关注
     * @param pageSize 页码
     * @param pageNum 每页显示数
     * @return 分页
     */
    Page<SysUser> iLoveUser(Integer pageSize, Integer pageNum);

    /**
     * 我的好友
     * @param pageSize 页码
     * @param pageNum 每页显示数
     * @return 分页
     */
    Page<SysUser> myFriends(Integer pageSize, Integer pageNum);

    /**
     * 修改地理位置
     * @param geoPoint 经纬度
     * @return R
     */
    R updateGeoPoint(String geoPoint);

    /**
     * 查询热门用户
     * @return list
     */
    List<SysUser> getHotUser();

    /**
     * 查询用户排名
     * @return list
     */
    List<SysUser> getRankUser();

    /**
     * 查询我
     * @return EsUser
     */
    EsUser aboutMe();
}
